◆FreeBSDで何が出来るのか?

ここでちょっと休憩。

ここには実際の作業に関わる内容は一切書かれてませんので、
すぐにカーネルを再構築したい方はすっ飛ばしてもらっても結構です。(ぉ


FreeBSDで何が出来るのか?

言うまでもなく、色々な事が出来ます。
ルーターにしてもたり、インターネットサーバーにしてみたり……その他にも色々。

しかし、FreeBSDとそれを含めたソフトではなく、
OS単体としてFreeBSDを見た場合、何が出来るのか?


ここまでは、FreeBSDの機能
-------------------------
ここからは、ソフトウェアの機能


という線引く場所(うわ、本当に線を引いてるよ…)が分かっていると、
調べなければならない事も限定できるし、色々と分かってくる事も多くなると思います。


それを説明する時、「カーネル」の存在なしには語れません。


◆Kernel(カーネル)とは?

フライドチキンなアノ方を思い浮かべた方は、とりあえず退場です(ぉ。


カーネルとは「OSの中核部分を担うプログラム」です。

どれだけシステムとして安定しているかは、このカーネルの出来具合によって決まります。


カーネルは、CPUの操作、メモリ管理、タスク(プロセス)管理、ハードウェア管理といった
システム上重要な操作を全て受け持っています。

そして、カーネルがこの操作を失敗すると、カーネルは停止…システムダウンしてしまうわけです。


FreeBSDで、あるソフトを使用している最中、突然何の操作も受け付けなくなってしまっても、
それはそのソフトがフリーズしてしまっただけであり、
カーネル自体は問題なく動いている事がほとんどです。
(サーバーから、起動しているのであればWebページも見れるはずです)


その場合、別コンソールよりログインしてみると、正常に操作できるので、
そちらからフリーズしてしまったソフトを強制停止させる事により復帰する事も可能です。


UNIX系統は、このカーネルが非常に頑丈に作られています。
逆に言えばカーネルが停止するのはとんでもない事態であるともいえます(汗)。
開発チームに今すぐ報告しましょう!というくらい大変です。


そしてFreeBSDやLinuxは、このカーネルそのものがソースとして公開されています。

つまり、自分のシステムに合った、一番最適なカーネルを自分で作り直せるわけです。

これを一般的に「カーネルの再構築」と呼びます。


普段使用している周辺機器の全ては、このカーネルを介して使用されます。
そのため、カーネルにその機器に関する機能(ドライバ)が組み込まれていないと、
基本的に使用する事は不可能です。

OSによっては、対応していない機器に関しては
カーネルに外部ドライバである「モジュール」というものを組み込んで使用可能にしたりもします。
Windowsのデバイスドライバがこれに当たりますね。

FreeBSDは、バージョン4からこのモジュールと言ったものが登場します。
しかし、モジュールを組み込む必要が出た場合、
どこかにモジュールを組み込むための命令を書き込んで「手動」で組み込まないといけません。


Linuxの最新カーネルでは、「動的」に…すなわち、モジュールが必要になった際、
自動的に組み込んでくれるようです。

しかし、サーバーとしては、使用する機器はすでに分かっているわけですから、
「モジュール」といった機能に頼らなくても、
あらかじめ再構築時、カーネルに全て組み込んでやればいいわけですので、
サーバーPCにモジュールの存在意義はあまり多くないと思えます。

しかし、何事にも例外はあり、
「ハードウェア開発メーカーが、その機器のモジュールのみを公開している」ような場合が
ごくたまにあります。

その場合、モジュールの出番になるわけです。


---------------------------
以下、余談。

Windowsをカーネル部分で見てみると、非常に面白い事も数多くあります。
Windows9x-Me系統には通称Windows9xカーネルが使用されてます。
これらは、16bitで動作するMS-DOS時代の互換性を極力残しつつ作成されていたため、
色んな所で「トラブルが多かった」カーネルとなってます。
この9xカーネルはWindowsMeにて引退します。

WindowsNT系統にはNTカーネルといった独自のカーネルが存在します。
これは、企業導入をメインに(UNIXのように)安定性を重視して、1から開発されたカーネルです。
Windows9x系統と画面や操作性は非常に似てますが、それはマイクロソフトが「似せて作ったため」であり、
カーネルそのものは、Windows9x系統とは全く別物です。
このNTカーネルは非常に安定しており、Linuxのコードが使用されているとか、
まことしやかに囁かれたりしたわけですが…(真偽は不明です(汗))。

そしてWindows2000/XPには、このNTカーネルが使用されていたりします。
Windows2000以降、飛躍的にOSの安定性が上がった事情はこの辺にあります。


ちなみにLinuxにおいて、「Linuxとはカーネルである」という格言(?)もあります。
Linuxにもカーネル以外にシェル等、様々なものが存在するけど、
それはほとんどがGNUプロジェクト等からの借り物であって、
一般的に言われているLinuxとは、これらのソフトを使用しているために
[GNU/Linux]と言うべきものだそうです。

FreeBSDは、「カーネル+基本プログラム」で一つのものです。

…えぇと、これ以上はボロが出そうなので、語りません…(汗)。


◆FreeBSDにおけるKernelの機能

これをある程度知っておけば、
「これはカーネルの仕事」「これはカーネルの仕事じゃない」と区別できます。

「この機能は、カーネルに組み込まないといけないから、カーネルを再構築しないといけない」

…なんてすばやく判断できるわけです。なんかカッコイイですね(ぉぃ

インストール時に使用して、インストールされたマシンに最初に使用されているカーネルは
「おそらくどんなハードウェアがPCに存在しても認識できる」ように、
対応している全て(主に周辺機器)のドライバが組み込まれたカーネルとなっています。

これは通称「GENERICカーネル」と呼ばれますが、
もちろん自分のPCに必要の無いドライバが文字通り「山ほど」組み込まれているわけであり、
非常に無駄が多くなっています。
…サウンドドライバ等、どう考えても起動に必要の無いドライバは外されていたりします。
念のため。


サーバーを運用する場合、「自分の必要な機能のみを持ったカーネル」を
再構築しなければいけない場合が数多く出てきます。

NATDを使用したルーターを作成する場合でも、このGENERICカーネルには、
「用意されているけど組み込まれていない」機能を使用します。
中には、必要になった時に組み込める「モジュール」では対応できないような機能もあります。

動作になんら支障の無い状況でも、
「自分の必要な機能のみを持ったカーネルを再構築する」のは、
ある意味UNIXにおける運用上の美学とも言えます。


その代わり、システムの根底に関わるプログラムの再構築を行うわけであり、
それ相応のリスクも伴います。
間違って、自分のPCに必要なドライバを外してしまったりしたら、
カーネル再構築後、いざ再起動すればカーネルで認識できなくて起動しなくなってしまいます。

GENERICカーネルではきちんと動いていたのに、カーネルを再構築したら動かなくなってしまった。
これはカーネルが悪いのではなく、アナタの再構築が悪かった事になります。

…しかし、このトラブルを回避する方法は数多く存在します。
その場合の手順の説明もしていくつもりですので、少し安心して下さい。


そういうことを踏まえつつ、カーネルの再構築に進みたいと思います。



[一つ上に戻る]

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル